home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS12.ADF / AmigaBBS / sysmail (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-08-05  |  8KB  |  195 lines

  1. Main:
  2. GOSUB Feedback
  3. CHAIN "df0:Menus",10,ALL
  4.  
  5. Modem:
  6. IF rings=0 THEN OtherModem
  7. x=FRE(0)
  8. FOR j= 1 TO LEN(a$):p$=MID$(a$,j,1)
  9. PRINT p$;:PRINT#1,p$;:NEXT j
  10. a$="":p$="":RETURN
  11.  
  12. OtherModem:
  13. x=FRE(0)
  14. FOR j= 1 TO LEN(a$):p$=MID$(a$,j,1)
  15. PRINT p$;:NEXT j
  16. a$="":p$="":RETURN
  17.  
  18. Answers:
  19. telly=0:t$="":t=0:i$="":ch$="":alter=0:IF rings=0 THEN SomeAnswers
  20. WHILE 1 AND alter<1
  21.   WHILE LOC(1)<>0
  22.     ch$=INPUT$(1,1)
  23.     equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
  24.     i$=i$+ch$:equivs=0
  25.     telly=telly+1:IF telly=78 THEN ch$=r$:telly=0
  26.     IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2):telly=telly-1
  27.     IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN alter=3:telly=0
  28.     a$=ch$:GOSUB Modem:ch$=""
  29.   WEND
  30.   ch$=INKEY$:i$=i$+ch$
  31.   a$=ch$:GOSUB Modem
  32.   IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN telly=0:GOTO MoreAnswers
  33.   IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
  34.   ch$="":IF LEN(i$)=0 THEN connect=PEEK (&Hbfd*&H1000+&H0):IF connect<>0 THEN okp=0:RETURN
  35. WEND
  36. IF i$<>"" THEN MoreAnswers
  37. SomeAnswers:
  38. ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
  39. IF ch$= CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN MoreAnswers
  40. IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
  41. ch$=""
  42. GOTO SomeAnswers
  43. MoreAnswers:
  44. IF okp<>1 THEN RETURN
  45. IF i$="" THEN ch$="":GOTO Answers
  46. t$=i$:IF LEN(t$)>80 THEN t$=LEFT$(t$,78)+r$
  47. RETURN
  48.  
  49. SeqRead:
  50. ERASE ABCS$:DIM ABCS$(185)
  51. a$=r$+r$+"[>                                K Quits                               <]"+r$+r$:GOSUB Modem
  52. OPEN "I", #3, file$
  53. ReadSeq:
  54. j=0:L=0:k=0:Countl=0
  55. WHILE NOT EOF(3)
  56.   x=FRE(0):j=j+1
  57.   LINE INPUT#3,ABCS$(j):ABCS$(j)=ABCS$(j)+r$
  58. WEND
  59. CLOSE#3:k=j:L=0:Detect=0
  60. WHILE L<k
  61.   L=L+1:a$=ABCS$(L):GOSUB Modem
  62.   CheckSeq:
  63.   t$="":t=0:i$="":ch$="":IF rings=0 THEN SomeCheckSeq
  64.   WHILE LOC(1)<>0
  65.     ch$=INPUT$(1,1):equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
  66.     i$=i$+ch$:equivs=0:a$=ch$:GOSUB Modem
  67.   WEND
  68.   IF i$<>"" THEN MoreCheckSeq
  69.   SomeCheckSeq:
  70.   ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
  71.   OtherCheckSeq:
  72.   IF Detect=1 GOTO MoreCheckSeq
  73.   Countl=Countl+1:IF Countl=24 THEN a$=r$+"More (y,n,c)?":GOSUB A1
  74.   IF Countl=24 THEN MenS$=UCASE$(LEFT$(t$,1)):IF MenS$="N" THEN L=k+1
  75.   IF Countl=24 AND MenS$="Y" THEN Countl=0
  76.   IF Countl=24 AND MenS$="C" THEN Detect=1
  77.   IF Countl=24 AND Detect<>1 THEN Countl=0
  78.   MoreCheckSeq:
  79.   IF i$=CHR$(75) OR i$=CHR$(107) THEN L=k+1
  80. WEND
  81. ERASE ABCS$:DIM ABCS$(185):RETURN
  82.  
  83. A1:
  84. GOSUB Modem:GOSUB Answers:RETURN
  85.  
  86. CheckConTime:
  87. Contime$=TIME$:ChEntTime$=RIGHT$(EntTime$,5):Contime$=RIGHT$(Contime$,5)
  88. Contime=VAL(Contime$):EntTime=VAL(ChEntTime$)
  89. IF Contime-EntTime>30 AND Veru$="000" THEN okp=0:a$=r$+"Time limit exceeded."+r$:GOSUB Modem:RETURN
  90. IF Contime-EntTime>45 AND Veru$="007" THEN okp=0:a$=r$+"Time limit exceeded."+r$:GOSUB Modem:RETURN
  91. okp=1:RETURN
  92.  
  93. Feedback:
  94. a$=r$+"Enter Message: [Max. 40 lines] /EX to Exit"+r$:GOSUB Modem
  95. Extm=0:Ddt=3
  96. WHILE Extm<1
  97.   Ddt=Ddt+1
  98.   a$=r$+STR$(Ddt-3)+":":GOSUB A1
  99.   ABCS$(Ddt)=t$
  100.   IF UCASE$(LEFT$(t$,3))="/EX" THEN Extm=1:Ddt=Ddt-1
  101.   IF Ddt=42 THEN a$=r$+"Last Line!":GOSUB Modem
  102.   IF Ddt=43 THEN Extm=1
  103. WEND
  104. ABCS$(1)="Time:"+TIME$+" "+"Date:"+DATE$+r$
  105. ABCS$(2)="Name:"+Name1$+" "+Name2$+"UserID:"+UserID$+r$
  106. ABCS$(3)=r$
  107. QueryFeedback:
  108. a$=r$+"  S- Save  L- List  A- Abort  C- Continue  E- Edit:":GOSUB A1
  109. MenS$=UCASE$(LEFT$(t$,1))
  110. IF MenS$="S" THEN SaveFeedback
  111. IF MenS$="L" THEN ListFeedback
  112. IF MenS$="A" THEN RETURN
  113. IF MenS$="C" THEN ContFeedback
  114. IF MenS$="E" THEN EditFeedback
  115. GOTO QueryFeedback
  116. SaveFeedback:
  117. OPEN "A", #3, "df1:Feedback"
  118. FOR j=1 TO Ddt
  119. PRINT#3,ABCS$(j)
  120. NEXT j
  121. CLOSE#3:a$=r$+"Thank you for your Feedback."+r$:GOSUB Modem
  122. RETURN
  123.  
  124. InsertEditFeedback:
  125. IF Ddt>=199 THEN a$=r$+"No room to insert.":GOSUB Modem:GOTO EditFeedback
  126. a$=r$+"Insert before which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFeedback
  127. instln=VAL(t$)+3
  128. FOR j=Ddt TO instln STEP -1
  129. ABCS$(j+1)=ABCS$(j)
  130. NEXT j
  131. ABCS$(instln)="    "+r$:Ddt=Ddt+1
  132. GOTO EditFeedback
  133.  
  134. EditFeedback:
  135. a$=r$+"R- Replace  I- Insert  D- Delete  S- Save  X- Exit:":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  136. IF MenS$="R" THEN ReplaceEditFeedback
  137. IF MenS$="I" THEN InsertEditFeedback
  138. IF MenS$="D" THEN DeleteEditFeedback
  139. IF MenS$="S" THEN SaveFeedback
  140. IF MenS$="X" THEN QueryFeedback
  141. GOTO EditFeedback
  142.  
  143. DeleteEditFeedback:
  144. a$=r$+"Delete starting which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFeedback
  145. stln=VAL(t$)+3:IF stln<4 OR stln>Ddt THEN EditFeedback
  146. a$=r$+"Ending which line:":GOSUB A1:endtln=VAL(t$)+3:IF endtln>Ddt THEN endtln=Ddt
  147. IF stln>endtln THEN SWAP stln,endtln
  148. a$=r$+"Delete from"+STR$(stln-3)+" to"+STR$(endtln-3)+r$+"Are you sure? (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  149. IF MenS$="N" THEN EditFeedback
  150. FOR j=endtln+1 TO Ddt
  151. ABCS$(j-((endtln+1)-stln))=ABCS$(j)
  152. NEXT j
  153. Ddt=Ddt-((endtln+1)-stln)
  154. FOR j=Ddt TO Ddt+((endtln+1)-stln)
  155. ABCS$(j)="    "+r$
  156. NEXT j
  157. GOTO EditFeedback
  158.  
  159. ListFeedback:
  160. a$=r$+"Line to start at:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryFeedback
  161. stln=VAL(t$)+3:IF stln<4 OR stln>Ddt THEN QueryFeedback
  162. a$=r$+"Line to stop at:":GOSUB A1:endtln=VAL(t$)+3:IF endtln<stln THEN QueryFeedback
  163. IF endtln>Ddt THEN endtln=Ddt
  164. a$=r$:GOSUB Modem
  165. FOR L=stln TO endtln
  166. a$=STR$(L-3)+":"+ABCS$(L):GOSUB Modem:NEXT L:GOTO QueryFeedback
  167.  
  168. ReplaceEditFeedback:
  169. a$=r$+"Replace which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFeedback
  170. rplnn=VAL(t$)+3:IF rplnn<4 OR rplnn>Ddt THEN EditFeedback
  171. a$=r$+"Replace:"+ABCS$(rplnn)+"With:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFeedback
  172. Temprep$=t$
  173. a$=r$+"Replace:"+ABCS$(rplnn)+"With:"+Temprep$+"(Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  174. IF MenS$="Y" THEN ABCS$(rplnn)=Temprep$
  175. GOTO EditFeedback
  176.  
  177. ContinueFeedback:
  178. IF Ddt>198 THEN a$=r$+"No Room!":GOTO QueryFeedback
  179. Dzz=0
  180. a$=r$+"Enter Text: [Max. 197 lines] /EX to Exit":GOSUB Modem
  181. WHILE Dzz<1
  182.   Ddt=Ddt+1
  183.   a$=r$+STR$(Ddt-3)+":":GOSUB A1:ABCS$(Ddt)=t$
  184.   IF UCASE$(LEFT$(t$,3))="/EX" THEN Dzz=1:Ddt=Ddt-1
  185.   IF Ddt=199 THEN a$=r$+"Last Line!":GOSUB Modem
  186.   IF Ddt=200 THEN Dzz=1
  187. WEND
  188. GOTO QueryFeedback
  189.  
  190. Teflon:
  191. IF teetse=1 THEN a$=r$+"Sorry, not allowed!":GOSUB Modem:okp=1:GOTO Menus
  192. IF teetse=0 THEN ltomr=1:teetse=1:RETURN
  193. RETURN
  194.  
  195.